package com.itheima.controller.backend;

import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import com.itheima.common.constant.MessageConstant;
import com.itheima.common.entity.PageResult;
import com.itheima.common.entity.QueryPageBean;
import com.itheima.common.entity.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Encounter
 * @date 2024/10/02 16:51<br/>
 * 检查项相关
 */
@RestController
@RequestMapping("/checkitem")
@Slf4j
public class CheckItemController
    {
        @Autowired
        private CheckItemService checkItemService;
        
        /**
         * 新增检查项
         *
         * @param checkItem 检查项
         * @return {@link Result }
         */
        @PostMapping("/add")
        public Result add(@RequestBody CheckItem checkItem)
            {
                log.info("新增的检查项：{}", checkItem);
                //返回新增条数
                int num = checkItemService.add(checkItem);
                //log.info("新增条数：{}", num);
                if (num > 0)
                    {
                        //新增成功
                        return new Result(true, MessageConstant.ADD_CHECKITEM_SUCCESS);
                    }
                else
                    {
                        //新增失败
                        return new Result(false, MessageConstant.ADD_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 分页查询
         *
         * @param queryPageBean 查询页面 Bean
         * @return {@link Result }
         */
        @PostMapping("/findPage")
        public Result findPage(@RequestBody QueryPageBean queryPageBean)
            {
                log.info("分页查询参数,当前页码：{}，每页展示条数：{}", queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
                PageResult page = checkItemService.page(queryPageBean);
                if (page.getRows() != null && !page.getRows().isEmpty())
                    {
                        //查询成功
                        return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS, page);
                    }
                else
                    {
                        //查询失败
                        return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 根据id查询
         *
         * @param id id
         * @return {@link Result }
         */
        @GetMapping("/findById")
        public Result findById(@RequestParam Integer id)
            {
                log.info("要查询的id：{}", id);
                CheckItem checkItem = checkItemService.findById(id);
                if (checkItem != null)
                    {
                        //查询成功
                        return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS, checkItem);
                    }
                else
                    {
                        //查询失败
                        return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 根据id删除
         *
         * @param id 检查项id
         * @return {@link Result }
         */
        @DeleteMapping("/delete")
        public Result delete(@RequestParam Integer id)
            {
                log.info("要删除的id：{}", id);
                int num = checkItemService.deleteById(id);
                //log.info("已删除的数据数量：{}", num);
                if (num > 0)
                    {
                        //删除成功
                        return new Result(true, MessageConstant.DELETE_CHECKITEM_SUCCESS);
                    }
                else
                    {
                        //删除失败
                        return new Result(false, MessageConstant.DELETE_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 查找全部
         *
         * @return {@link Result }
         */
        @GetMapping("/findAll")
        public Result findAll()
            {
                log.info("查询全部检查项");
                List<CheckItem> checkItemList = checkItemService.queryAll();
                if (checkItemList != null && !checkItemList.isEmpty())
                    {
                        //查询成功
                        return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS, checkItemList);
                    }
                else
                    {
                        //查询失败
                        return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 找到检查项目IDS由检查群id
         *
         * @param checkGroupId 检查群id
         * @return {@link Result }
         */
        @GetMapping("/findCheckItemIdsByCheckGroupId")
        public Result findCheckItemIdsByCheckGroupId(@RequestParam Integer checkGroupId)
            {
                log.info("检查组id：{}", checkGroupId);
                List<Integer> checkItemIds=checkItemService.findCheckItemIdsByCheckGroupId(checkGroupId);
                if (checkItemIds != null && !checkItemIds.isEmpty())
                    {
                        //查询成功
                        return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS, checkItemIds);
                    }
                else
                    {
                        //查询失败
                        return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
                    }
            }
        
        /**
         * 修改检查项
         *
         * @param checkItem 检查项
         * @return {@link Result }
         */
        @PutMapping("/edit")
        public Result update(@RequestBody CheckItem checkItem)
            {
                log.info("要修改的检查项的id：{}", checkItem);
                int num = checkItemService.update(checkItem);
                if (num > 0)
                    {
                        //修改成功
                        return new Result(true,MessageConstant.EDIT_CHECKITEM_SUCCESS);
                    }
                else
                    {
                        //修改失败
                        return new Result(false,MessageConstant.EDIT_CHECKITEM_FAIL);
                    }
            }
    }
